---
title: clsPolicyPeriodCollection
summary: API reference for clsPolicyPeriodCollection.
status: draft
owner: SAIF Corporation
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# clsPolicyPeriodCollection

`clsPolicyPeriodCollection` retrieves and indexes the ordered set of policy terms for one policy. It is the only compiled entry point that issues `pk72846_view_policy.getPolicyPeriods`, materializes the returned rows into `clsPolicyPeriod` objects, and supplies the list that `clsPolicyData` later scans for current-term, renewal-term, DOI-effective, and information-page-printed decisions.

## Purpose
- Execute `pk72846_view_policy.getPolicyPeriods` and convert each returned row into a `clsPolicyPeriod` instance.
- Provide indexed and keyed lookups over the loaded periods so `clsPolicyData` can apply [BR-VP-018](../../business-rules.md#br-vp-018-currentrenewal-period-selection).
- Supply the ordered sequence consumed by `GetLatestPolicyPeriodInfoPagePrinted`, which relies on collection order when applying [BR-VP-019](../../business-rules.md#br-vp-019-latest-printed-information-page-period).* 

## Context
- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.Business.View.Policy` (embedded)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `Item` | `Default Public ReadOnly Property Item(ByVal Index As Integer) As clsPolicyPeriod` | Returns the period at a specific collection position after retrieval. |
| `Item` | `Default Public ReadOnly Property Item(ByVal inPolicyPerEffDate As Date) As clsPolicyPeriod` | Finds the term whose effective date exactly matches the requested date. |
| `Item` | `Default Public ReadOnly Property Item(ByVal inStatus As String) As clsPolicyPeriod` | Finds the first term carrying a given status value, such as the `Open` or `Renew` statuses used by [BR-VP-018](../../business-rules.md#br-vp-018-currentrenewal-period-selection). |
| `ItemEffectiveAtDOI` | `Public ReadOnly Property ItemEffectiveAtDOI(ByVal inDOI As Date) As clsPolicyPeriod` | Returns the term whose effective/expiration range contains the supplied date of injury. |
| `MyCriteria` | `Public ReadOnly Property MyCriteria() As Criteria` | Exposes the retrieval criteria, including policy number and optional top-N limit, to the data-access pipeline. |
| `Add` | `Public Shadows Function Add(ByVal inPolicyPeriod As clsPolicyPeriod) As Integer` | Adds a materialized period to the in-memory collection. |
| `Contains` | `Public Overloads Function Contains(ByVal inPolicyPeriod As clsPolicyPeriod) As Boolean` | Reports whether an equivalent period object is already present. |
| `Contains` | `Public Overloads Function Contains(ByVal inPolicyNum As Decimal) As Boolean` | Reports whether the collection contains a period whose equality comparison matches the supplied policy number.* |
| `ContainsDeleted` | `Public Overloads Function ContainsDeleted(ByVal inPolicyPeriod As clsPolicyPeriod) As Boolean` | Reports whether an equivalent period object sits in the collection's deleted list. |
| `ContainsDeleted` | `Public Overloads Function ContainsDeleted(ByVal inPolicyNum As Decimal) As Boolean` | Reports whether the deleted list contains a period whose equality comparison matches the supplied policy number.* |
| `Remove` | `Public Sub Remove(ByVal inPolicyPeriod As clsPolicyPeriod)` | Removes a specific period object from the in-memory list. |
| `Remove` | `Public Sub Remove(ByVal inPolicyNum As Decimal)` | Removes the first loaded period whose policy number matches the supplied value. |
| `GetPolicyPeriodCollection` | `Public Shared Function GetPolicyPeriodCollection(ByVal inDataportal As IDataPortalInfo, ByVal inPolicyNum As Decimal) As clsPolicyPeriodCollection` | Retrieves all periods for a policy through the data portal. |
| `GetPolicyPeriodCollection` | `Public Shared Function GetPolicyPeriodCollection(ByVal inDataportal As IDataPortalInfo, ByVal inPolicyNum As Decimal, ByVal inTopNPolicyPeriods As Integer) As clsPolicyPeriodCollection` | Retrieves only the requested top-N subset of periods for a policy. |
| `DataPortalInfo` | `Friend Property DataPortalInfo() As IDataPortalInfo` | Carries the portal context used by the nested criteria object. |
| `PolicyNum` | `Friend Property PolicyNum() As Decimal` | Holds the policy number passed to `pk72846_view_policy.getPolicyPeriods`. |
| `TopNPolicyPeriods` | `Friend Property TopNPolicyPeriods() As Decimal` | Holds the optional row-count limit passed to the retrieval procedure. |
| `RetrieveSQL` | `Friend ReadOnly Property RetrieveSQL() As String` | Names the stored procedure used to fetch the period rows. |

## Behavioral notes
- `BeforeRetrieve` sends `apolicynum`, `aTopNPolPer`, and a ref cursor to `pk72846_view_policy.getPolicyPeriods`, then `AfterRetrieve` loads each reader row into a fresh `clsPolicyPeriod`.
- `clsPolicyData.GetCurrentPolicyPeriod` and related helpers rely on this collection's status and date indexers to resolve the current, renewal, and DOI-effective term under [BR-VP-018](../../business-rules.md#br-vp-018-currentrenewal-period-selection).
- The latest printed information-page logic is implemented on `clsPolicyData`, but the scan can only work if this collection preserves the procedure's term ordering.*

## Constraints and usage notes
- This collection omits inherited members because its base type (`clsBusinessCollectionBase`) is external to the embedded library documentation set.
- Create/insert/update/delete criteria all return empty strings, so the collection documents read-only retrieval behavior aligned with [BR-VP-027](../../business-rules.md#br-vp-027-createinsertupdatedelete-sql-are-invalid).
- The key-based `Contains` and `Remove` overloads operate on policy number, not period effective date, so callers needing a specific term should prefer the date-based indexer.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Policy/clsPolicyPeriodCollection.vb`
- `SAIF.Business.View.Policy/clsPolicyData.vb`
